package com.touzhijia.authority.mapper;

import com.touzhijia.authority.domain.dto.request.UserQueryReq;
import com.touzhijia.authority.domain.entity.Permission;
import com.touzhijia.authority.domain.entity.User;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.Date;
import java.util.List;

/**
 * 作者： lzw<br/>
 * 创建时间：2018-03-14 17:06 <br/>
 */
public interface UserMapper extends Mapper<User> {

    User getByUsername(@Param("username") String username);

    List<User> findUser(UserQueryReq queryRes);

    /**
     * 查询用户所有的权限数据
     */
    List<Permission> findAllPermission(@Param("username") String username);

    List<User> findOnLdapRemoveUser(@Param("now") Date now);

    int existsRole(@Param("username") String username, @Param("roleName") String roleName);

    int addRole(@Param("username") String username, @Param("roleName") String roleName);

    int existsModule(@Param("username") String username, @Param("module") String module);

    int addModule(@Param("username") String username, @Param("module") String module);

    List<String> findModuleByUser(@Param("username") String username);

    /**
     * 删除 user_module
     */
    int delModule(@Param("username") String username, @Param("module") String module);

    /**
     * 删除 user_module
     */
    int delUserModuleByUsername(@Param("username") String username);

    /**
     * 删除 user_role
     */
    int delRole(@Param("username") String username, @Param("roleName") String roleName);

    /**
     * 删除 user_role
     */
    int deleteByRoleName(@Param("roleName") String roleName);

    /**
     * 删除 user_role
     */
    int delUserRoleByUsername(@Param("username") String username);

    /**
     * 删除 user
     */
    int deleteByUsername(@Param("username") String username);
}
